import axios from 'axios'

axios.defaults.baseURL = 'http://172.20.39.82:5001';
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;

// 创建实例时配置默认值
const instance = axios.create({
	baseURL: 'http://172.20.39.82:5001',
	timeout: 30000, // 超时时间 30 s
});

// 创建实例后修改默认值
// instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

// 添加请求拦截器
instance.interceptors.request.use(function(config) {
	// 在发送请求之前做些什么
	if(config.url === "/uploader"){
		console.log("拦截的请求:"+config.url);
		config.headers['Content-Type'] = 'multipart/form-data'
		
		// let forms = new FormData()
		// forms.append("file", config.data.file)
		// config.forms = forms
	}
	return config;
}, function(error) {
	// 对请求错误做些什么
	return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function(response) {
	// 2xx 范围内的状态码都会触发该函数。
	// 对响应数据做点什么
	return response;
}, function(error) {
	// 超出 2xx 范围的状态码都会触发该函数。
	// 对响应错误做点什么
	return Promise.reject(error);
});

// 移除拦截器
// const myInterceptor = axios.interceptors.request.use(function() {
// 	/*...*/
// });
// axios.interceptors.request.eject(myInterceptor);

// 自定义拦截器
// instance.interceptors.request.use(function() {
// 	/*...*/
// });

// 封装的核心函数
function request(options) {
	options.method = options.method || 'get';
	if (options.method.toLowerCase() == 'get') {
		options.params = options.data;
	}
	if(options.isFile){
		// 请求参数 改为 formData 重新赋值
		let fileForms = new FormData()
		fileForms.append("file", options.data.file.file)
		options.data = fileForms
	}
	
	// // headers -> 丢到拦截器里搞
	// if (options.isFile) {
	// 	console.log("上传文件");
	// 	instance.headers.post['Content-Type'] = 'multipart/form-data';
	// } else {
	// 	console.log("普通请求");
	// 	instance.head().post['Content-Type'] = 'application/json';
	// }
	//对mock的处理
	// let isMock = config.isMock;
	// if (typeof options.mock !== 'undefined') {
	//   isMock = options.mock;
	// }
	// 对线上环境做处理
	// if (config.env == 'prod') {
	//   // 不给你用到mock的机会
	//   instance.defaults.baseURL = config.baseApi;
	// } else {
	//   instance.defaults.baseURL = isMock ? config.mockApi : config.baseApi;
	// }
	return instance(options);
}

export default request;